minMatrix.js : inverse
構文 : matIV.inverse(mat, dest)
引数 : mat > 元となる行列
引数 : dest > 演算結果を格納する行列
行列から逆行列を生成します。mat に渡された行列の逆行列を求め dest に結果を出力します。
code:js
this.inverse = function(mat, dest){
var a = mat0, b = mat1, c = mat2, d = mat3, e = mat4, f = mat5, g = mat6, h = mat7, i = mat8, j = mat9, k = mat10, l = mat11, m = mat12, n = mat13, o = mat14, p = mat15, q = a * f - b * e, r = a * g - c * e,
s = a * h - d * e, t = b * g - c * f,
u = b * h - d * f, v = c * h - d * g,
w = i * n - j * m, x = i * o - k * m,
y = i * p - l * m, z = j * o - k * n,
A = j * p - l * n, B = k * p - l * o,
ivd = 1 / (q * B - r * A + s * z + t * y - u * x + v * w);
dest0 = ( f * B - g * A + h * z) * ivd; dest1 = (-b * B + c * A - d * z) * ivd; dest2 = ( n * v - o * u + p * t) * ivd; dest3 = (-j * v + k * u - l * t) * ivd; dest4 = (-e * B + g * y - h * x) * ivd; dest5 = ( a * B - c * y + d * x) * ivd; dest6 = (-m * v + o * s - p * r) * ivd; dest7 = ( i * v - k * s + l * r) * ivd; dest8 = ( e * A - f * y + h * w) * ivd; dest9 = (-a * A + b * y - d * w) * ivd; dest10 = ( m * u - n * s + p * q) * ivd; dest11 = (-i * u + j * s - l * q) * ivd; dest12 = (-e * z + f * x - g * w) * ivd; dest13 = ( a * z - b * x + c * w) * ivd; dest14 = (-m * t + n * r - o * q) * ivd; dest15 = ( i * t - j * r + k * q) * ivd; return dest;
};